package com.zmn.plat.model.entity.channel;

import com.zmn.plat.common.util.FieldNameMapping;
import com.zmn.plat.common.util.encrypt.annotation.EncryptDecryptClass;
import com.zmn.plat.common.util.encrypt.annotation.EncryptDecryptField;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @author tanghongjun
 * @version v1.0
 * @类说明：渠道结算信息实体
 * @since 2018/11/07 15:10
 */
@EncryptDecryptClass(key = "channelId")
@Data
public class ChannelSettle implements Serializable {

    /**
     * 渠道ID
     */
    private Integer channelId;

    /**
     * 平台标志：1.言而有信 2.啄木鸟
     */
    private Integer plat;

    /**
     * 财务规则：1.收付实现制2.权责发生制
     */
    @Deprecated
    @FieldNameMapping("财务规则")
    private Integer financialRules;

    /**
     * 结算周期：1年结，2季结，3月结，4周结
     * 渠道订单佣金和渠道代收款的结算周期一致(最新版本已废弃)
     * 新字段：statementMode
     */
    @Deprecated
    private Integer settleCycle;

    /**
     * 工程款结算周期：1月结，2半月结，3周结，4T+1次日结(最新版本已废弃)
     */
    @Deprecated
    private Integer engineeringSettle;

    /**
     * 结算公司：1总公司收款，2子公司收款(最新版本已废弃)
     */
    @Deprecated
    private Integer settlementCompany;

    /**
     * 佣金结算周期：1月结，2季结，3年结(最新版本已废弃)
     */
    @Deprecated
    private Integer commissionSettle;

    @FieldNameMapping("微信姓名")
    private String wechatName;

    @FieldNameMapping("微信账号")
    private String wechatAccount;

    @FieldNameMapping("支付宝姓名")
    private String alipayName;

    @FieldNameMapping("支付宝账号")
    private String alipayAccount;

    /**
     * 开户支行
     */
    @FieldNameMapping("开户行")
    private String bankBranch;

    /**
     * 银行卡号
     */
    @EncryptDecryptField
    @FieldNameMapping("银行卡号")
    private String bankAccount;

    /**
     * 银行卡开户名
     */
    @FieldNameMapping("户名")
    private String accountName;

    private String bankName;

    /**
     * 渠道对接财务ID
     */
    private Integer financeId;

    /**
     * 渠道对接财务姓名
     */
    @FieldNameMapping("渠道方财务对接人")
    private String financer;

    /**
     * 财务电话
     */
    @EncryptDecryptField
    @FieldNameMapping("渠道方财务对接人电话")
    private String financerPhone;

    /**
     * 获客成本导入模式：1按实际导入  2按固定金额  3按比例
     */
    @FieldNameMapping("获客成本类型")
    private Integer customerCostMode;

    /**
     * 获客成本金额:单位（分）
     */
    @FieldNameMapping("获客成本金额")
    private Integer customerCost;

    /**
     * 获客成本比例：0~100
     */
    @FieldNameMapping("获客成本比例")
    private BigDecimal customerCostPercent;

    /**
     * 推广服务费:单位（分）
     */
    @FieldNameMapping("推广服务费")
    private Integer promotionServiceFee;

    /**
     * 综合服务费:单位（分） 默认6.5元
     */
    @FieldNameMapping("综合服务费")
    private Integer comprehensiveServiceFee = 650;

    /**
     * 结算周期:2周结,4半月结,5月结
     */
    @NotNull(message = "结算周期不能为空")
    @FieldNameMapping("结算周期")
    private Integer statementMode;

    /**
     * 结算单生成时间
     */
    @FieldNameMapping("结算单生成时间")
    private Integer statementGenerateTime;

    /**
     * 结算截至时间
     */
    @FieldNameMapping("结算截至时间")
    private Integer statementEndTime;

    /**
     * 半月结第二次结算单生成时间
     */
    @FieldNameMapping("半月结第二次结算单生成时间")
    private Integer statementGenerateTimeSecond;

    /**
     * 半月结第二次结算截至时间
     */
    @FieldNameMapping("半月结第二次结算截至时间")
    private Integer statementEndTimeSecond;

    @FieldNameMapping("结算节点")
    private Integer statementNode;

    @FieldNameMapping("结算渠道：1.下单渠道 2.来源渠道")
    private Integer statementChannel;
    /**
     * 合并结算：1.否 2.是
     */
    @FieldNameMapping("合并结算")
    private Integer mergeSettle;

    /**
     * 描述: 开发票方：1.啄木鸟 2.渠道
     */

    @FieldNameMapping("开发票方")
    private Integer writeInvoiceParty;

    private String creater;

    private String updater;

    private Date createTime;

    private Date updateTime;

    private static final long serialVersionUID = 1L;
}